﻿using sipfe.Controllers.Base;
using sipfe.model.dataAccess;
using sipfe.service.nuevo;
using sipfe.util;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace sipfe.Areas.Mante.Controllers
{
    public class ConvocatoriaController : BaseSipfeController
    {
        string Titulo = "GESTIÓN Y MANTENIMIENTO DE CONVOCATORIAS";
        string paginaold = "SinRegistros";
        public ActionResult IndexCab()
        {
            ViewBag.TITULO = Titulo;
            cargaCatlogos1();
            ViewBag.nIdeConvocatoria = null;
            return View("ConvocatoriaManteInp");
        }
        public ActionResult CovocatoriaInp()
        {
            ViewBag.TITULO = Titulo;
            cargaCatlogos1();
            return View();
        }
        public ActionResult ConvocatoriaPabeCab()
        {
            ViewBag.TITULO = Titulo;
            cargaCatlogos1();
            return View("pabe/ConvocatoriaPabeCab");
        }

        public ActionResult CovocatoriaPabeInp()
        {

            ViewBag.Clase_Tramite = new List<SelectListItem> { new SelectListItem { Text = "BECA PABE", Value = Constante.CLASE_TRAMITE.BECA_PABE } };
            ViewBag.TITULO = Titulo;
            cargaCatlogos1();
            return View("pabe/CovocatoriaPabeInp");
        }

        [HttpPost]
        public ActionResult AddNuevaConvocatoria(SIPMaeConvocatoria sipMaeConvocatoria)
        {
            if (ModelState.IsValid)
            {
                string stringNIdeEmpresa = Request.Form["nIdeEmpresa"];
                string[] arrayEmpresas  = stringNIdeEmpresa.Split(',');
                string nombreTarifa     = "nIdeTarifa_";
                string nombreNumBecas   = "nNumeroBeca_";
                string nombreNivel      = "nIdeNivelEstudio_";
                string nombreConcepto   = "nIdeConcepto_";
                string nombreModalidad  = "nIdeModalidadEstudio_";
                //nIdeConcepto_1

                List<string> listaInstituto = new List<string>();
                Dictionary<int, string[]> dictionaryTarifa = new Dictionary<int, string[]>();
                for (int i = 0; i < arrayEmpresas.Length; i++)
                {
                    string reqNivel = Request.Form[nombreNivel + (i + 1)];
                    string reqConcepto = Request.Form[nombreConcepto + (i + 1)];
                    string reqModalidad = Request.Form[nombreModalidad + (i + 1)];
                    string reqNumBecas = Request.Form[nombreNumBecas + (i + 1)];
                    String[] arrayHijos = new String[4];

                    arrayHijos[0] = reqNivel;
                    arrayHijos[1] = reqConcepto;
                    arrayHijos[2] = reqModalidad;
                    arrayHijos[3] = reqNumBecas;
                    dictionaryTarifa.Add(Int32.Parse(arrayEmpresas[i]), arrayHijos);
                }
                ConvocatoriaService cS = new ConvocatoriaService();
                String[] rpta = cS.AddNuevaConvocatoriaService(sipMaeConvocatoria, dictionaryTarifa);
                return RedirectToAction("NuevaConvocatoriaRpta", new { nIdeConvocatoria = rpta[0] });
            }
            cargaCatlogos1();
            return View("CovocatoriaInp", sipMaeConvocatoria);
        }
        
        [HttpPost]
        public ActionResult AddNuevaConvocatoria_old(SIPMaeConvocatoria sipMaeConvocatoria)
        {
            if (ModelState.IsValid)
            {
                string stringNIdeEmpresa    = Request.Form["nIdeEmpresa"];
                string[] arrayEmpresas      = stringNIdeEmpresa.Split(',');
                string nombreTarifa         = "nIdeTarifa_";
                string nombreNumBecas       = "nNumeroBeca_";


                List<string> listaInstituto = new List<string>();
                Dictionary<int, string[]> dictionaryTarifa = new Dictionary<int, string[]>();
                for (int i = 0; i < arrayEmpresas.Length; i++)
                {
                    string reqNivelEstudio = Request.Form[nombreTarifa + (i + 1)];
                    string reqNumBecas = Request.Form[nombreNumBecas + (i + 1)];
                    String[] arrayHijos = new String[2];

                    arrayHijos[0] = reqNivelEstudio;
                    arrayHijos[1] = reqNumBecas;
                    dictionaryTarifa.Add(Int32.Parse(arrayEmpresas[i]), arrayHijos);
                }
                ConvocatoriaService cS = new ConvocatoriaService();
                String[] rpta = cS.AddNuevaConvocatoriaService(sipMaeConvocatoria, dictionaryTarifa);
                return RedirectToAction("NuevaConvocatoriaRpta", new { nIdeConvocatoria = rpta[0] });
            }
            cargaCatlogos1();
            return View("CovocatoriaInp", sipMaeConvocatoria);
        }

        public ViewResult NuevaConvocatoriaRpta(decimal nIdeConvocatoria)
        {
            ConvocatoriaService cS = new ConvocatoriaService();
           // SIPMaeConvocatoria conv = new SIPMaeConvocatoria();
           // conv = cS.findSIPMaeConvocatoriaByIdService(nIdeConvocatoria);
            ViewBag.nIdeConvocatoria = nIdeConvocatoria;
            cargaCatlogos1();
            return View("ConvocatoriaManteInp");
        }

        public ViewResult FormaOptionConcepto(int nIdeNivelEstudio, string sw)
        {
            ViewBag.conceptos = formaSelectGrupos(nIdeNivelEstudio);
            ViewBag.sw = sw;
            return View();
        }


       
          
        private void cargaCatlogos()
        {
            ViewBag.PaisEmisor = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_PAIS_EMISOR);
            ViewBag.TipoDocIdent = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_TIPO_DOC_IDENTIFICACION);
        }
        private void cargaCatlogos1()
        {
            ViewBag.TipoConvocatoria    = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_TIPO_CONVOCATORIA);
            ViewBag.PaisEmisor          = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_PAIS_EMISOR);
            ViewBag.TipoDocIdent        = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_TIPO_DOC_IDENTIFICACION);
            ViewBag.GrupoNIvelConvoca   = formaSelectGrupos(Constante.getInstance().N_IDE_GRUPO_NIVEL_CONVOCATORIA);
            ViewBag.ModalidadEstudio    = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_MODALIDAD_ESTUDIO);
            ViewBag.ClaseTramite        = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_CLASE_TRAMITE);
            ViewBag.TipoMoneda          = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_TIPO_MONEDA);
            
        }

        public ViewResult ListaConcocatoriaById(int nIdeConvocatoria)
        {
            ConvocatoriaService cS = new ConvocatoriaService();
            SIPMaeConvocatoria conv = new SIPMaeConvocatoria();
            conv = cS.findSIPMaeConvocatoriaByIdService(nIdeConvocatoria);
            ViewBag.nIdeConvocatoria = nIdeConvocatoria;
            cargaCatlogos1();
            return View("ListaConcocatoriaById", conv);
        }

        public ViewResult ListaConvocatoriaPabeById(int nIdeConvocatoria)
        {
            ConvocatoriaService cS = new ConvocatoriaService();
            SIPMaeConvocatoria conv = new SIPMaeConvocatoria();
            conv = cS.findSIPMaeConvocatoriaByIdService(nIdeConvocatoria);
            ViewBag.nIdeConvocatoria = nIdeConvocatoria;
            cargaCatlogos1();
            return View("pabe/ListaConvocatoriaPabeById", conv);
        }





        public ViewResult ListarConvocatoria(string fec_IniVig, string fec_FinVig, string ide_Empresa, string n_ClaseTramite, string n_IdeConvo)
        {            
            ConvocatoriaService cS = new ConvocatoriaService();
            IList<dynamic> listaConv = cS.ListarConvocatoriaService(fec_IniVig, fec_FinVig, ide_Empresa, n_ClaseTramite, n_IdeConvo); 

          //  List<SIPMaeConvocatoria> listaConv = new List<SIPMaeConvocatoria>();
           // listaConv = cS.ListarConvocatoriaService(fec_IniVig, fec_FinVig, ide_Empresa, n_ClaseTramite);
            if (listaConv.Count>0)_pagina = "ListarConvocatoriaDet";            
            return View(_pagina, listaConv);
        }

        /*
         n_PorcUniEmple: n_PorcUniEmple, n_MontoUniEmple: n_MontoUniEmple, n_NumBecasUniEmple: n_NumBecasUniEmple, n_MontoXBecaUniEmple: n_MontoXBecaUniEmple,
         n_PorcUniOpera: n_PorcUniOpera, n_MontoUniOpera: n_MontoUniOpera, n_NumBecasUniOpera: n_NumBecasUniOpera, n_MontoXBecaUniOpera: n_MontoXBecaUniOpera
                        };
         */

        public ViewResult addNuevaConvocatoriaPabe(string d_FecIniVig, string d_FecFinVig, int n_IdeTipoConvo, int n_IdeEmpresa, int n_IdeClaseSol, string vDescr,
                                                    decimal n_MontoBrutoConvo, int n_IdeTipoMoneda, decimal n_PorcParaIpfe, decimal n_PorcParaBeca, decimal n_PorcParaEmpleado,
                                                    decimal n_PorcParaOperario, decimal n_PorcPrimariaEmple, decimal n_NumBecasPrimariaEmple, decimal n_MontoXBecaPrimariaEmple,
                                                    decimal n_PorcSecundariaEmple, decimal n_NumBecasSecundariaEmple, decimal n_MontoXBecaSecundariaEmple, decimal n_PorcTecnicaEmple,
                                                    decimal n_NumBecasTecnicaEmple, decimal n_MontoXBecaTecnicaEmple, decimal n_PorcPrimariaOpera, decimal n_NumBecasPrimariaOpera,
                                                    decimal n_MontoXBecaPrimariaOpera, decimal n_PorcSecundariaOpera, decimal n_NumBecasSecundariaOpera, decimal n_MontoXBecaSecundariaOpera,
                                                    decimal n_PorcTecnicaOpera, decimal n_NumBecasTecnicaOpera, decimal n_MontoXBecaTecnicaOpera, decimal n_MontoNetoIpfe,
                                                    decimal n_MontoNetoConvo, decimal n_MontoBecaEmpleado, decimal n_MontoBecaOperario, decimal n_MontoPrimariaEmple, 
                                                    decimal n_MontoSecundariaEmple, decimal n_MontoTecnicaEmple, decimal n_MontoPrimariaOpera, decimal n_MontoSecundariaOpera,
                                                    decimal n_MontoTecnicaOpera, decimal n_PorcUniEmple, decimal n_MontoUniEmple, decimal n_NumBecasUniEmple, decimal n_MontoXBecaUniEmple,
                                                    decimal n_PorcUniOpera, decimal n_MontoUniOpera, decimal n_NumBecasUniOpera, decimal n_MontoXBecaUniOpera)
        {
            ConvocatoriaService cS = new ConvocatoriaService();
            int n_IdeUsuario = Int32.Parse(Session[Constante.N_IDE_USUARIO].ToString());
            SIPMaeConvocatoria convocatoria = new SIPMaeConvocatoria();

            int nideConvocatoria = cS.addNuevaConvocatoriaPabeService(d_FecIniVig, d_FecFinVig, n_IdeTipoConvo, n_IdeEmpresa, n_IdeClaseSol, vDescr, n_MontoBrutoConvo,
                                                        n_IdeTipoMoneda,n_PorcParaIpfe,n_PorcParaBeca,n_PorcParaEmpleado,n_PorcParaOperario,
                                                        n_PorcPrimariaEmple,n_NumBecasPrimariaEmple,n_MontoXBecaPrimariaEmple,n_PorcSecundariaEmple,
                                                        n_NumBecasSecundariaEmple,n_MontoXBecaSecundariaEmple,n_PorcTecnicaEmple,n_NumBecasTecnicaEmple,
                                                        n_MontoXBecaTecnicaEmple,n_PorcPrimariaOpera,n_NumBecasPrimariaOpera,n_MontoXBecaPrimariaOpera,
                                                        n_PorcSecundariaOpera,n_NumBecasSecundariaOpera,n_MontoXBecaSecundariaOpera,n_PorcTecnicaOpera,
                                                        n_NumBecasTecnicaOpera, n_MontoXBecaTecnicaOpera, n_IdeUsuario, n_MontoNetoIpfe, n_MontoNetoConvo,  
                                                        n_MontoBecaEmpleado,  n_MontoBecaOperario,  n_MontoPrimariaEmple, n_MontoSecundariaEmple,  
                                                        n_MontoTecnicaEmple,  n_MontoPrimariaOpera,  n_MontoSecundariaOpera, n_MontoTecnicaOpera,
                                                        n_PorcUniEmple, n_MontoUniEmple, n_NumBecasUniEmple, n_MontoXBecaUniEmple, n_PorcUniOpera,  
                                                        n_MontoUniOpera,  n_NumBecasUniOpera,  n_MontoXBecaUniOpera);


            IList<dynamic> listaConv = cS.ListarConvocatoriaService("", "", "", "", nideConvocatoria.ToString());

            return View("pabe/ListarConvocatoriaPabeDet", listaConv);
        }

        public ViewResult ListarConvocatoriaPabe(string fec_IniVig, string fec_FinVig, string ide_Empresa, string n_ClaseTramite, string n_IdeConvo)
        {
            ConvocatoriaService cS = new ConvocatoriaService();
            IList<dynamic> listaConv = cS.ListarConvocatoriaService(fec_IniVig, fec_FinVig, ide_Empresa, n_ClaseTramite, n_IdeConvo);

            //  List<SIPMaeConvocatoria> listaConv = new List<SIPMaeConvocatoria>();
            // listaConv = cS.ListarConvocatoriaService(fec_IniVig, fec_FinVig, ide_Empresa, n_ClaseTramite);
            if (listaConv.Count > 0) _pagina = "pabe/ListarConvocatoriaPabeDet";
            return View(_pagina, listaConv);
        }




    }
}